<?php

/**
 * consultorio actions.
 *
 * @package    dentist
 * @subpackage consultorio
 * @author     Your name here
 */
class consultorioActions extends sfActions {

    public function executeIndex(sfWebRequest $request) {
        $usuarioId = $this->getUser()->getAttribute('id');
        $this->Consultorios = ConsultorioPeer::getConsultorios($usuarioId);
    }

    public function executeShow(sfWebRequest $request) {
        $this->Consultorio = ConsultorioPeer::retrieveByPk($request->getParameter('id'));
        $this->forward404Unless($this->Consultorio);
    }

    public function executeNew(sfWebRequest $request) {
        $this->form = new ConsultorioForm();
    }

    public function executeCreate(sfWebRequest $request) {
        $this->forward404Unless($request->isMethod(sfRequest::POST));

        $this->form = new ConsultorioForm();

        $this->processFormCreate($request, $this->form);

        $this->setTemplate('new');
    }

    public function executeEdit(sfWebRequest $request) {
        $this->forward404Unless($Consultorio = ConsultorioPeer::retrieveByPk($request->getParameter('id')), sprintf('Object Consultorio does not exist (%s).', $request->getParameter('id')));
        $this->form = new ConsultorioForm($Consultorio);
    }

    public function executeUpdate(sfWebRequest $request) {
        $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
        $this->forward404Unless($Consultorio = ConsultorioPeer::retrieveByPk($request->getParameter('id')), sprintf('Object Consultorio does not exist (%s).', $request->getParameter('id')));
        $this->form = new ConsultorioForm($Consultorio);

        $this->processFormUpdate($request, $this->form);

        $this->setTemplate('edit');
    }

    public function executeDelete(sfWebRequest $request) {
        $request->checkCSRFProtection();

        $this->forward404Unless($Consultorio = ConsultorioPeer::retrieveByPk($request->getParameter('id')), sprintf('Object Consultorio does not exist (%s).', $request->getParameter('id')));
        $Consultorio->delete();

        $this->redirect('consultorio/index');
    }

    protected function processFormCreate(sfWebRequest $request, sfForm $form) {
        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
        $usuarioId = $this->getUser()->getAttribute('id');

        if ($form->isValid()) {
            $valores = $this->form->getValues();

            // se busca el consultorio en la base para ver si ya existe
            if (ConsultorioPeer::getConsultorio($valores['nombre'], $usuarioId) == null) {

                $Consultorio = new Consultorio();
                $Consultorio->setNombre($valores['nombre']);
                $Consultorio->setDireccion($valores['direccion']);
                $Consultorio->setTelefono($valores['telefono']);
                $Consultorio->setHorario($valores['horario']);
                $Consultorio->setUsuarioId($usuarioId);
                $Consultorio->save();

                $this->redirect('consultorio/show?id=' . $Consultorio->getId());
            } else {
                $this->getUser()->setFlash("error", "El nombre que ingresó ya existen en el sistema, por favor ingrese otro.");
            }
        } else {
            $this->getUser()->setFlash("error", "Error al guardar los datos, por favor verifíquelos y vuelva a intentar.");
        }
    }

    protected function processFormUpdate(sfWebRequest $request, sfForm $form) {
        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
        if ($form->isValid()) {
            $Consultorio = $form->save();

            $this->redirect('consultorio/show?id=' . $Consultorio->getId());
        } else {
            $this->getUser()->setFlash("error", "Error al guardar los datos, por favor verifíquelos y vuelva a intentar.");
        }
    }

}
